from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain_community.llms import OpenAI
from typing import List, Dict
import logging

logger = logging.getLogger(__name__)

class LLMAnalyzer:
    """LLM增强分析器"""
    
    def __init__(self, api_key: str):
        """初始化LLM分析器
        
        Args:
            api_key: OpenAI API密钥
        """
        self.llm = OpenAI(
            temperature=0.7,
            max_tokens=1000,
            openai_api_key=api_key
        )
        
        self.analysis_prompt = PromptTemplate(
            input_variables=["categories", "keywords", "time_series"],
            template="""
            你是一个科技趋势分析专家。基于以下数据：
            - 主要研究领域: {categories}
            - 关键词频率: {keywords}
            - 时间趋势: {time_series}
            
            请提供深入的分析报告，包括：
            1. 领域发展趋势
            2. 潜在研究方向
            3. 创新机会预测
            4. 对产业的影响评估
            
            使用专业但易懂的语言，限制在500字以内。
            """
        )
        
    def enhanced_analysis(self, analysis_data: Dict) -> str:
        """执行增强分析
        
        Args:
            analysis_data: 基础分析结果
            
        Returns:
            增强分析报告
        """
        try:
            chain = LLMChain(llm=self.llm, prompt=self.analysis_prompt)
            return chain.run(
                categories=analysis_data['category_counts'].to_dict(),
                keywords=analysis_data['top_keywords'].to_dict(),
                time_series=analysis_data['time_series'].to_dict()
            )
        except Exception as e:
            logger.error(f"LLM分析失败: {str(e)}")
            return "无法生成增强分析报告"